<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <f:view id="viewValidarSessao">
        <h:form id="formValidarSessao">
            <p:idleMonitor onidle="idleDialog.show();inicializarContador();" rendered="#{not mBeanDialogoAtivarSessao.acessoAnonimo}"
              timeout="#{(mBeanDialogoAtivarSessao.timeoutSessao - mBeanDialogoAtivarSessao.tempoExibicao)*1000}">
                <p:confirmDialog id="confirmDialogSessaoAExpirar" widgetVar="idleDialog" modal="true" closable="false" 
                    header="Controle de sessão de usuário"
                    severity="alert" >
                       <f:facet name="message">
                          <h:outputText value="Sua sessão está prestes a expirar por inatividade. Deseja manter sua sessão ativa?"/>
                          <br/>
                          <h:outputLabel value="Tempo restante: "/><h:outputText id="tempoRestante" value="#{mBeanDialogoAtivarSessao.tempoExibicao}"/><h:outputText value=" segundos."/>                         
                       </f:facet>                      
                       <h:commandButton id="comandoSim" process="@this" value="Sim" oncomplete="idleDialog.hide();reiniciarContador();" actionListener="#{mBeanDialogoAtivarSessao.ativarSessao}" immediate="true"/>
                       <h:commandButton id="comandoNao" process="@this" value="Não" oncomplete="idleDialog.hide()" actionListener="#{mBeanDialogoAtivarSessao.efetuarLogout}" immediate="true"/>
                </p:confirmDialog>
            </p:idleMonitor>
        </h:form>
    </f:view>
    
    <script type="text/javascript">
       var timeout;
       var interval;      
       
       function inicializarContador(){
           if(interval){
               window.clearInterval(interval);
           }
           
           var campo = document.getElementById('formValidarSessao:tempoRestante');
           
           interval = setInterval(function(){
               var contador = campo.innerHTML;
               contador = contador - 1;            
               campo.innerHTML = contador;
            },1000); //decrementa o contador a cada segundo.

           var tempoExibicao = '<h:outputText value="#{mBeanDialogoAtivarSessao.tempoExibicao}"/>';
           
           timeout = setTimeout(logout,tempoExibicao*1000); //após o timeout, redireciona para a página de login.
       }

       function reiniciarContador(){
           var campo = document.getElementById('formValidarSessao:tempoRestante');
           campo.innerHTML = '<h:outputText value="#{mBeanDialogoAtivarSessao.tempoExibicao}"/>';
           window.clearInterval(interval);
           window.clearTimeout(timeout);
       }

       function logout(){          
            var comandoNao = document.getElementById('formValidarSessao:comandoNao');
            comandoNao.click();
       }
    </script>
    
</ui:composition>

